package uy.org.softtech.cssuite.entidad.sistema;

import java.io.Serializable;

import javax.xml.bind.annotation.XmlTransient;

import static uy.org.softtech.cssuite.helpers.HelperFechaHora.duracion;
import static uy.org.softtech.cssuite.helpers.HelperTextos.URUGUAY;

@XmlTransient
public class Estadistica implements Serializable {

	private static final long serialVersionUID = 5199817589075830772L;
	
	private String metodo;
	private long llamadas;
	private long tiempoTotal;
	private long tiempoPromedio;
	private long tiempoMaximo;
    
    public Estadistica(String metodo) {
        this.metodo = metodo;
        this.llamadas = 0;
        this.tiempoTotal = 0;
        this.tiempoPromedio = 0;
        this.tiempoMaximo = 0;
    }
    
    /*
     * 	GETTERS
     */
    public String getMetodo() {
		return metodo;
	}
	public long getLlamadas() {
		return llamadas;
	}
	public long getTiempoTotal() {
		return tiempoTotal;
	}
	public long getTiempoPromedio() {
		return tiempoPromedio;
	}
	public long getTiempoMaximo() {
		return tiempoMaximo;
	}
	
	/*
	 * 	SETTERS
	 */
	public void setMetodo(String metodo) {
		this.metodo = metodo;
	}
	public void setLlamadas(long llamadas) {
		this.llamadas = llamadas;
	}
	public void setTiempoTotal(long tiempoTotal) {
		this.tiempoTotal = tiempoTotal;
	}
	public void setTiempoPromedio(long tiempoPromedio) {
		this.tiempoPromedio = tiempoPromedio;
	}
	public void setTiempoMaximo(long tiempoMaximo) {
		this.tiempoMaximo = tiempoMaximo;
	}

	/*
     * 	METODOS
     */
    public void actualizarValores(long tiempo) {
    	this.llamadas++;
    	this.tiempoTotal += tiempo;
    	this.tiempoPromedio = this.tiempoTotal / this.llamadas;
    	if(tiempo > this.tiempoMaximo) {
    		this.tiempoMaximo = tiempo;
    	}
    }

	@Override
	public String toString() {
		StringBuilder builder = new StringBuilder();
		builder.append("Estadistica [");
		builder.append("metodo=" + getMetodo() + ", ");
		builder.append("tiempoTotal=" + duracion(0, getTiempoTotal(), URUGUAY) + ", ");
		builder.append("llamadas=" + getLlamadas() + ", ");
		builder.append("tiempoPromedio=" + duracion(0, getTiempoPromedio(), URUGUAY) + ", ");
		builder.append("tiempoMaximo=" + duracion(0, getTiempoMaximo(), URUGUAY));
		builder.append("]");
		return builder.toString();
	}
}
